Computer-implemented communication techniques that use messaging services are becoming increasingly common, and are employed in many contexts including voice communication (e.g., Voice over IP (VoIP), instant messaging, real-time communication between applications, etc.). In general, messaging services require a networking protocol to establish and manage communications between participants. These services may use various mechanisms to establish sessions, including session protocols such as a “Session Initiation Protocol” (“SIP”). SIP is an application-layer control protocol that computer systems can use to discover one another and to establish, modify, and terminate sessions. SIP is an Internet proposed standard. Its specification, “RFC 3261,” is available at <http://www.ietf.org/rfc/rfc3261.txt>. A specification for extensions to SIP relating to event notifications, “RFC 3265,” is available at <http://www.ietf.org/rfc/rfc3265.txt>.
A SIP network comprises entities that can participate in a dialog as a client, server, or both. SIP supports four types of entities: user agent, proxy server, redirect server, and registrar. User agents initiate and terminate sessions by exchanging messages with other SIP entities. A user agent can be a user agent client (“UAC”), which is a device that initiates SIP requests, or a user agent server (“UAS”), which is a device that receives SIP requests and responds to such requests. As examples, “IP-telephones,” personal digital assistants, and any other type of computing device may be user agents. A device can be a UAC in one dialog and a UAS in another, or may change roles during the dialog. A proxy server is an entity that acts as a server to clients and a client to servers. In so doing, proxy servers intercept, interpret, or forward messages between UACs and UASs. A redirect server accepts a SIP request and generates a response directing the UAC that sent the request to contact an alternate network resource. A registrar is a server that accepts registration information from user agents and informs a location service of the received registration information.
SIP supports multiple message types, including requests, which are sent from a UAC to a UAS, and responses, which are sent from a UAS to a UAC when responding to a request. A SIP message can be composed of three parts. The first part of a SIP message is a “request line,” which includes fields to indicate a message (e.g., INVITE) and a request URI that identifies the user or service to which the request is being directed. The second part of a SIP message comprises headers whose values are represented as name-value pairs. The third part of a SIP message is the message's body, which is used to describe the session to be initiated or which contains data that relates to the session. Message bodies may appear in requests, responses, or other SIP messages.
A VoIP telephone call can be initiated by a caller's device sending a SIP INVITE request identifying the address (e.g., telephone number) of the callee to be called. When the callee's device receives the invitation, it can notify the callee of the invitation and send a SIP SESSION-In-PROGRESS message to the caller. When the callee answers, the callee's device responds to the INVITE request with a SIP 200 OK message. The conversation between the caller and callee can then be transmitted in packets using the Real-Time Protocol. When the caller hangs up, the caller's device sends a SIP BYE request to the callee to terminate the call.
VoIP allows general purpose computers, such as traditional personal computers (PCs), to function as PC-based phone systems. For example, VoIP software may be loaded and executed on the PCs, turning the PCs into PC-based telephones (e.g., VoIP “softphones”). Users can then use the PC-based telephones to place calls over the Internet to other PC-based telephones or to fixed or cell phones. Unfortunately, the PC-based telephone relies solely on the activity on the PC to respond to incoming calls. Thus, in instances where the PC is hibernating or powered off, the telephone experience cannot be accomplished at the PC.